package com.vecspace.saas;

public class SaasTenantThreadHolder {
	
	private static boolean saasTenantUsed = false;
	
	/**只要调用过putSaasTenant，则isSaasTenantUsed返回true，否则返回false*/
	public static boolean isSaasTenantUsed() {
		return saasTenantUsed;
	}

	//database schema name
	private static ThreadLocal<SaasTenant> localSaasTenant = new ThreadLocal<SaasTenant>();
 
	public static void putSaasTenant(SaasTenant tenant) {
		localSaasTenant.set(tenant);
		saasTenantUsed = true;
	}
	
	/**用于清除线程变量（在有线程池的情况下，必须先remove之后再使用）
	 * 
	 *  
	 * @author: wanghua
	 */
	public static void remove() {
		if(localSaasTenant!= null) {
			localSaasTenant.remove();
		}
	}
	
	/**获取当前访问者的Saas租户id
	 * 
	 * @return  
	 * @author: wanghua
	 */
	public static String getTenantId() {
		if(!saasTenantUsed)return "";
		SaasTenant saasTenant = localSaasTenant.get();
		if (saasTenant == null) {			
			return "";
		}else {
			return saasTenant.getTenantId();
		}
	}
 
	public static SaasTenant getSaasTenant() {
		if(!saasTenantUsed)return null;
		SaasTenant db = localSaasTenant.get();
		return db;
	}
}
